home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byt86jun.arc / MIDI.ARC / LIST4.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1980-01-01  |  2.1 KB  |  110 lines

  1.  
  2. { Reset status and pointer variables in track data block
  3. }
  4. procedure reset_track_data(var tdt:track_data_block);
  5. begin
  6. with tdt do
  7.   begin
  8.   tds_ptr:=1;
  9.   edat:=false;
  10.   curr.running_status:=0;
  11.   curr.event_type:=UNKNOWN;
  12.   end;
  13. end;
  14.  
  15. { Load track data stream from user 
  16.   specified file into track data block
  17. }
  18. procedure load_track_data(var tdt:track_data_block);
  19. var
  20.   tdf : File;
  21.   tdfn : string[FILENAME_LEN];
  22. begin
  23. reset_track_data(tdt);
  24. write('Track data filename: ');
  25. readln(tdfn);
  26. assign(tdf,tdfn);
  27. reset(tdf);
  28. blockread(tdf,tdt.tds,TRACK_DATAFILE_SIZE div RECORD_LEN);
  29. close(tdf);
  30. end;
  31.  
  32. { Save track data stream from track 
  33.   data block to user specified file
  34. }
  35. procedure save_track_data(tdt:track_data_block);
  36. var
  37.   tdf : File;
  38.   tdfn : string[FILENAME_LEN];
  39. begin
  40. write('Track data filename: ');
  41. readln(tdfn);
  42. assign(tdf,tdfn);
  43. rewrite(tdf);
  44. blockwrite(tdf,tdt.tds,TRACK_DATAFILE_SIZE div RECORD_LEN);
  45. close(tdf);
  46. end;
  47.  
  48. { Return current track data byte from track data block
  49. }
  50. function this_byte(tdt:track_data_block):byte;
  51. begin
  52. this_byte:=tdt.tds[tdt.tds_ptr];
  53. end;
  54.  
  55. { Advance pointer to next track data byte 
  56.   in track data block
  57. }
  58. procedure advance(var tdt:track_data_block);
  59. begin
  60. tdt.tds_ptr:=tdt.tds_ptr+1;
  61. end;
  62.  
  63. { Convert byte to hexadecimal ASCII string
  64. }
  65. function itox(i:byte): hex_str;
  66. begin
  67. itox[0]:=chr(2);
  68. itox[1]:=DIGITS[i div 16];
  69. itox[2]:=DIGITS[i mod 16];
  70. end;
  71.  
  72. { Dump track data stream in hexadecimal format
  73. }
  74. procedure dump_track_data(var tdt:track_data_block);
  75. label
  76.   return;
  77. var
  78.   n,st,off : integer;
  79. begin
  80. writeln('Track Data Stream Dump...');
  81. writeln;
  82. write('     ');
  83. for n:=0 to 15 do
  84.   write(itox(n):4);
  85. writeln;
  86. n:=0;
  87. while (n < TRACK_DATAFILE_SIZE div 16) do
  88.   begin
  89.   st:=n*16;
  90.   write(itox(st div 256):2,itox(st mod 256):2,' ');
  91.   for off:=0 to 15 do
  92.     begin
  93.     write(itox(ord(tdt.tds[st+off+1])):4);
  94.     if (tdt.tds[st+off+1] = DATA_END) then
  95.       goto return;
  96.     end;
  97.   writeln;
  98.   n:=n+1;
  99.   end;
  100. return:
  101. writeln;
  102. end;
  103.  
  104. f (tdt.tds[st+off+1] = DATA_END) then
  105.       goto return;
  106.     end;
  107.   writeln;
  108.   n:=n+1;
  109.   end;
  110. re